/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tela.enfermagem;

import ferramentas.CFG;
import ferramentas.DataUtil;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author ciar
 */
public class GeradorCSV_Enfermagem {

    private String textoCSV = "";
    private SimpleDateFormat formatterData = new SimpleDateFormat("dd/MM/yyyy");
    private SimpleDateFormat formatterHorario = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");

    public GeradorCSV_Enfermagem() {
        addCabecalho();
    }

    private void addCabecalho() {
        textoCSV = textoCSV.concat(
                "Nome;Inscrição;Endereço;Bairro;CEP;Cidade;Estado;Telefone Residencial;Telefone Celular;E-mail;Pai;Mãe;"
                + "Data Nascimento;Cidade;Estado;Sexo;País;Nacionalidade;Estado Civil;RG;UF;Data Emissão;CPF;"
                + "Título Eleitoral;UF;Zona;Seção;Nível Curso;Curso Nível Médio/Superior;Instituição;Início;Término;"
                + "Local de Trabalho;Telefone;Cargo;Cidade;Estado;Possui Computador?;Concorda com Edital;"
                + "Curriculum Lattes;Certificado de conclusão de curso;Indicação do serviço pra fazer o curso;Horário Inscrição\r\n");
    }

    public File gerarListaCSV(ResultSet inscritos, String caminhoArquivo) throws SQLException, UnsupportedEncodingException {
        while (inscritos.next()) {
            addUsuario(inscritos);
        }
        return geraArquivoCSV(caminhoArquivo);
    }

    private File geraArquivoCSV(String caminhoArquivo) throws UnsupportedEncodingException {
        File arquivo = new File(caminhoArquivo + getNomeArquivoCSV());
        try {
            PrintWriter pw = new PrintWriter(arquivo, "UTF-8");
            pw.write(textoCSV);
            pw.close();
            return arquivo;

        } catch (FileNotFoundException ex) {
            System.out.println("" + new Date() + " - Erro ao gravar arquivo: " + arquivo.getAbsolutePath() + "\n\tCaminho: " + caminhoArquivo);
            return null;
        }
    }

    public String getNomeArquivoCSV() {
        return "lista_inscritos.csv";
    }

    private void addUsuario(ResultSet inscrito) throws SQLException {
        textoCSV = textoCSV.concat(""
                + inscrito.getString("nome").replaceAll(";", ",") + ";"
                + inscrito.getInt("id") + ";"
                + inscrito.getString("endereco").replaceAll(";", ",") + ";"
                + inscrito.getString("bairro").replaceAll(";", ",") + ";"
                + inscrito.getString("cep").replaceAll(";", ",") + ";"
                + inscrito.getString("cidade").replaceAll(";", ",") + ";"
                + inscrito.getString("estado").replaceAll(";", ",") + ";"
                + inscrito.getString("telfixo").replaceAll(";", ",") + ";"
                + inscrito.getString("telcel").replaceAll(";", ",") + ";"
                + inscrito.getString("email").replaceAll(";", ",") + ";"
                + inscrito.getString("pai").replaceAll(";", ",") + ";"
                + inscrito.getString("mae").replaceAll(";", ",") + ";"
                + formatterData.format(inscrito.getDate("nascimento")) + ";"
                + inscrito.getString("cidadenasc").replaceAll(";", ",") + ";"
                + inscrito.getString("estadonasc").replaceAll(";", ",") + ";"
                + inscrito.getString("sexo").replaceAll(";", ",") + ";"
                + inscrito.getString("pais").replaceAll(";", ",") + ";"
                + inscrito.getString("nacionalidade").replaceAll(";", ",") + ";"
                + inscrito.getString("estadocivil").replaceAll(";", ",") + ";"
                + inscrito.getString("rg").replaceAll(";", ",") + ";"
                + inscrito.getString("ufrg").replaceAll(";", ",") + ";"
                + formatterData.format(inscrito.getDate("emissaorg")) + ";"
                + inscrito.getString("cpf").replaceAll(";", ",") + ";"
                + inscrito.getString("titulo").replaceAll(";", ",") + ";"
                + inscrito.getString("uftitulo").replaceAll(";", ",") + ";"
                + inscrito.getString("zonatitulo").replaceAll(";", ",") + ";"
                + inscrito.getString("secaotitulo").replaceAll(";", ",") + ";"
                + inscrito.getString("cursonivel").replaceAll(";", ",") + ";"
                + inscrito.getString("curso").replaceAll(";", ",") + ";"
                + inscrito.getString("instituicaocurso").replaceAll(";", ",") + ";"
                + DataUtil.converterData(inscrito.getDate("iniciocurso"), DataUtil.DataFormat.MMAAAA) + ";"
                + DataUtil.converterData(inscrito.getDate("fimcurso"), DataUtil.DataFormat.MMAAAA) + ";"
                + inscrito.getString("localtrabalho").replaceAll(";", ",") + ";"
                + inscrito.getString("teltrabalho").replaceAll(";", ",") + ";"
                + inscrito.getString("cargotrabalho").replaceAll(";", ",") + ";"
                + inscrito.getString("cidadetrabalho").replaceAll(";", ",") + ";"
                + inscrito.getString("estadotrabalho").replaceAll(";", ",") + ";"
                + (inscrito.getBoolean("computador") ? "Sim" : "Não") + ";"
                + (inscrito.getBoolean("termoedital") ? "Sim" : "Não") + ";"
                + inscrito.getString("linklattes").replaceAll(";", ",") + ";"
                + (inscrito.getString("certificadocurso") != null ? "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/" + CFG.DIRETORIO_DOCUMENTOS_ENFERMAGEM + "/" + CFG.ENFERMAGEM_CERTIFICADO_CURSO + "/" + inscrito.getString("certificadocurso").replaceAll(";", ",") : "Não recebido") + ";"
                + (inscrito.getString("indicacaotrabalho") != null ? "http://mercurio.ciar.ufg.br:8080/bridge_files/documentos/" + CFG.DIRETORIO_DOCUMENTOS_ENFERMAGEM + "/" + CFG.ENFERMAGEM_INDICACAO_TRABALHO + "/" + inscrito.getString("indicacaotrabalho").replaceAll(";", ",") : "Não recebido") + ";"
                + DataUtil.converterData(new Date(inscrito.getTimestamp("datainscricao").getTime()), DataUtil.DataFormat.DDMMAAAAHHMMSS) + ""
                + "\r\n");
    }
}
